home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 3 / Gekikoh Dennoh Club Vol. 3 (Japan).7z / Gekikoh Dennoh Club Vol. 3 (Japan) (Track 1).bin / fsw3 / make / function.doc < prev    next >
Text File  |  1990-02-17  |  7KB  |  197 lines

  1.  
  2. GNUmakeではMakefile中で関数が使えます。関数呼び出しの書式は
  3.  
  4.         $(function arguments)
  5.  
  6. または
  7.  
  8.         ${function arguments}
  9.  
  10. です。functionは関数名、argumentsはその引数です。引数は関数名と1つ以上の
  11. 空白、あるいはタブによって区切られます。2つ以上の引数がある場合はカンマ
  12. (,)で区切って並べます。引数中に空白やスペースを入れたい場合は、変数を使い
  13. ます。
  14.  
  15. 例:
  16.         comma:= ,
  17.         space:= $(empty) $(empty)
  18.         foo:= a b c
  19.         bar:= $(subst $(space),$(comma),$(foo))
  20.  
  21. ここで、barは`a,b,c'となります。
  22.  
  23.  
  24. GNUmakeでは以下の関数が使用できます。
  25.  
  26.         文字列処理関数
  27.  
  28.  
  29.         $(subst from,to,text)
  30.                 text中に出現するfromをtoで置換します。
  31.                         $(subst ee,EE,feet on the street)
  32.                 は`fEEt on the strEEt'になります。
  33.  
  34.         $(patsubst pattern,replace,text)
  35.                 text中のpatternにマッチする空白で区切られた語をreplaceで
  36.                 置き換えます。patternには1つの`%'を含むことができます。
  37.                 `%'はワイルドカードの`*'と同じような働きをします。
  38.                         $(patsubst %.c,%.o,x.c.c bar.c)
  39.                 は`x.c.o bar.o'になります。
  40.  
  41.         $(strip string)
  42.                 stringに前後する空白を取り除き、String中に出現する2つ以
  43.                 上の空白を1つの空白に置き換えます。
  44.                         $(strip a b c )
  45.                 は`a b c'になります。
  46.  
  47.         $(findstring find,in)
  48.                 in中にfindが出現すればfindを返し、そうでなければ空文字を
  49.                 返します。
  50.                         $(findstring a,abc)
  51.                 は`a`に
  52.                         $(findstring a,bcd)
  53.                 は`'になります。
  54.  
  55.         $(filter pattern,text)
  56.                 空白で区切られたtext中の語で、patternにマッチしないものを
  57.                 取り除きます。
  58.                         source:= foo.c bar.c ugh.h
  59.                         $(filter %.c,$(source))
  60.                 は`foo.c bar.c'になります。
  61.  
  62.         $(filter-out pattern,text)
  63.                 $(filter)とは逆に、patternにマッチするものをtextから除き
  64.                 ます。
  65.                         source:= foo.c bar.c ugh.h
  66.                         $(filter-out %.c,$(source))
  67.                 は`ugh.h'になります。
  68.  
  69.         $(sort list)
  70.                 空白で区切られたlistの語をソートします。重複する語は取り
  71.                 除かれます。
  72.                         $(sort foo lose bar lose)
  73.                 は`bar foo lose'になります。
  74.  
  75.  
  76.         ファイル名処理関数
  77.  
  78.         $(dir names)
  79.                 ファイル名namesのディレクトリ部分を取り出します。
  80.                         $(dir src\foo.c hacks)
  81.                 は`src\ .\'となります。
  82.  
  83.         $(notdir names)
  84.                 ファイル名namesからディレクトリ部分を取り除いたものを返し
  85.                 ます。
  86.                         $(notdir src\foo.c hacks)
  87.                 は`foo.c hacks'になります。
  88.  
  89.  
  90.         $(suffix names)
  91.                 ファイル名namesからサフィックスを取り出します。サフィック
  92.                 スは最後のピリオドから後ろの部分です。ピリオドのない名前
  93.                 については空文字を返します。
  94.                         $(suffix src/foo.c hacks)
  95.                 は`.c'になります。
  96.  
  97.         $(basename names)
  98.                 ファイル名namesからサフィックスを取り除いた部分を返します。
  99.                         $(basename src/foo.c hacks)
  100.                 は`src/foo hacks'になります。
  101.  
  102.         $(addsuffix suffix,names)
  103.                 引数namesにサフィックスsuffixをつけます。
  104.                         $(addsuffix .c,foo bar)
  105.                 は`foo.c bar.c'になります。
  106.  
  107.         $(addprefix prefix,names)
  108.                 引数namesにプレフィックスをつけます。
  109.                         $(addprefix \lib\,clib.a gnulib.a)
  110.                 は`\lib\clib,a \lib\gnulib.a'になります。
  111.  
  112.         $(join list1,list2)
  113.                 list1とlist2の語を連結します。list1のn番目の語はlist2のn
  114.                 番目の語と連結されます。どちらかのリストが長い場合、余分
  115.                 な要素はそのまま結果にコピーされます。
  116.                         $(join a b,.c .c)
  117.                 は`a.c b.o'となります。
  118.  
  119.         $(word n,text)
  120.                 text中のn番目の語を返します。
  121.                         $(word 2,foo bar baz)
  122.                 は`bar'となります。
  123.  
  124.         $(words text)
  125.                 text中の語の数を返します。
  126.                         $(words foo bar baz)
  127.                 は`3'になります。
  128.  
  129.         $(firstword text)
  130.                 text中の最初の語を返します。$(word 1,text)と同じことです。
  131.                         $(firstword foo bar baz)
  132.                 は`foo'になります。
  133.  
  134.         $(wildcard pattern)
  135.                 patternのワイルドカード展開をします。ワイルドカードはUNI
  136.                 Xのshと同様のもので、`*'、`?'、`[...]'が使えます。ディレ
  137.                 クトリにfoo.c bar.c bar.h baz.c afo.cがある場合、
  138.                         $(wildcard [a-b]*.c)
  139.                 は`afo.c bar.c baz.c'になります。
  140.  
  141.  
  142.  
  143.         foreach関数
  144.  
  145.         $(foreach var,list,text)
  146.                 変数varにlistの値を次々代入してtextを実行します。
  147.                         dirs:= foo bar
  148.                         $(foreach dir,$(dirs),$(wildcard $(dir)/*.c))
  149.                 はディレクトリfoo、bar中の.cを拡張子に持つファイルのリス
  150.                 トを返します。
  151.                 foreach関数実行後の変数varの値は、foreach実行前と変わりま
  152.                 せん。
  153.  
  154.  
  155.         orign関数
  156.  
  157.         $(orign variable)
  158.                 変数variableがどこで定義されたものであるかを返します。返
  159.                 される値とその意味は以下のとおりです。
  160.  
  161.                 `undefined'
  162.                         variableは未定儀である
  163.  
  164.                 `default'
  165.                         variableはデフォルトで定義された
  166.  
  167.                 `environment'
  168.                         variableは環境変数から受け継がれたものであり、オ
  169.                         プション`-e'は指定されていない
  170.  
  171.                 `environment override'
  172.                         variableは環境変数から受け継がれたものであり、オ
  173.                         プション`-e'が指定されている
  174.  
  175.                 `file'
  176.                         variableはmakefile中で定義された
  177.  
  178.                 `command line'
  179.                         variableはコマンドラインで定義された
  180.  
  181.                 `override'
  182.                         variableはmakefile中でoverride指令により定義され
  183.                         た
  184.  
  185.                 `automatic'
  186.                         variableはコマンド実行時に規則にしたがって自動的
  187.                         に定義された
  188.  
  189.  
  190.  
  191.  
  192.         shell関数
  193.  
  194.         $(shell command)
  195.                 commandをコマンドシェル(Human68kではcommand.x)に渡し、出
  196.                 力結果の改行をブランクに置換する。
  197.